package br.slic.jsf;

import java.util.ArrayList;
import java.util.List; 

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;

import br.slic.entidade.Perfil;
import br.slic.entidade.UsuarioSistema;
import br.slic.exception.ServiceException;
import br.slic.services.interfaces.AdminServiceLocal;
import br.slic.services.interfaces.GenericServiceLocal;
import br.slic.util.SLICConstantes;

@ManagedBean
@ViewScoped
public class UsuarioBean extends CRUD<UsuarioSistema> {

	private static final long serialVersionUID = -1133057467843760860L;

	@EJB
	private AdminServiceLocal adminService;
	
	@EJB
	private GenericServiceLocal genericService;	
	
	private List<SelectItem> perfis = new ArrayList<SelectItem>();

	/**
	 * @return the perfis
	 */
	public List<SelectItem> getPerfis() {
		return perfis;
	}

	/**
	 * @param perfis the perfis to set
	 */
	public void setPerfis(List<SelectItem> perfis) {
		this.perfis = perfis;
	}

	private void carregarPerfil() throws ServiceException {
		this.perfis = new ArrayList<SelectItem>();
		List<Perfil> perfis = genericService.obterEntidades(Perfil.class);
		for(Perfil perfil : perfis) {
			this.perfis.add(new SelectItem(perfil, perfil.getNome()));
		}		
	}
	
	@Override
	protected List<UsuarioSistema> getEntidadesImpl() throws ServiceException {
		return genericService.obterEntidades(UsuarioSistema.class);
	}

	@Override
	protected void editarImpl() throws ServiceException {
		carregarPerfil();
	}
	
	@Override
	protected void novoImpl() throws ServiceException {
		setEntidade(new UsuarioSistema());
		carregarPerfil();
	}

	@Override
	protected void salvarImpl() throws ServiceException {
		adminService.persisteUsuario(getEntidade());
	}
	
	@Override
	protected String getNomeFuncionalidade() {
		return SLICConstantes.NOME_FUNCIONALIDADE_USUARIOS;
	}

}
